/**
 * @author Vitor Franco do Carmo (vitor.carmo@capgemini.com)
 * @since 17/04/2013
 *
 */
package br.com.vfcfw.commons.domain.enums;

/**
 * Enumeração com as opções <tt>Sim</tt> e <tt>Não</tt>.
 * 
 * @author Vitor Franco do Carmo (vitor.carmo@capgemini.com)
 * @since 17/04/2013
 * 
 */
public enum ESimNao {

    SIM('S', "label.sim"),
    NAO('N', "label.nao");

    private Character valor;

    private String chaveDescricao;

    /**
     * Construtor da classe.
     * 
     * @param valor Valor que identifica a Enumeração.
     * @param chaveDescricao Chave da descrição da enumeração no arquivo de recurso.
     */
    private ESimNao(Character valor, String chaveDescricao) {

        this.valor = valor;
        this.chaveDescricao = chaveDescricao;
    }

    /**
     * Retorna o valor que identifica a Enumeração.
     * 
     * @return Valor que identifica a Enumeração.
     */
    public Character getValor() {

        return valor;
    }

    /**
     * Retorna a chave da descrição da enumeração no arquivo de recurso.
     * 
     * @return Chave da descrição da enumeração no arquivo de recurso.
     */
    public String getChaveDescricao() {

        return chaveDescricao;
    }

    /**
     * Retorna a {@link ESimNao} correspondente ao valor informado.
     * 
     * @param valor Valor que identifica a Enumeração.
     * @return {@link ESimNao}.
     */
    public static ESimNao obterPorValor(Character valor) {

        ESimNao eSimNao = null;

        for (ESimNao simNao : values()) {

            if (simNao.getValor().equals(valor)) {

                eSimNao = simNao;
                break;
            }
        }
        return eSimNao;
    }
}
